7-57 交换三个整数的次序
mirco-akira
# 7-57 交换三个整数的次序
分数 10 作者 李泽林 单位 河北工程大学
本题目要求输入3个整数值a、b、c,把b中的值赋给a,把c中的值赋给b,把a中的值赋给c,最后输出a、b、c的值。
输入格式: 输入在一行中给出3个整数a、b、c,中间用空格隔开。
输出格式: 对每一组输入,在一行中输出交换后的a、b、c的值,中间用空格隔开。
输入样例:
4 5 6
输出样例:
5 6 4
1
2
3
4
2
3
4
代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
# 代码:
方法1(使用中间变量):
#include <stdio.h>
int main(void){
int intgr_a, intgr_b, intgr_c, cter_var;
//定义整数intgr_a, intgr_b, intgr_c和中间变量cter_var
scanf("%d %d %d", &intgr_a, &intgr_b, &intgr_c);
cter_var = intgr_a; //将第一个值赋给中间变量
intgr_a = intgr_b; //将第二个值赋给第一个值
intgr_b = intgr_c; //将第三个值赋给第二个值
intgr_c = cter_var; //最后将中间变量的值赋给第三个值
printf("%d %d %d",intgr_a, intgr_b, intgr_c); //最后输出
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
方法2-进阶(不使用中间变量):
此方法不要求掌握,因为可读性差。 如果想要学习可点击 位运算 (opens new window),进行阅读
#include <stdio.h>
int main(){
int a ,b,c;
scanf("%d %d %d",&a,&b,&c);
b = b^a^c;
a = b^a^c;
c = b^c^a;
b = b^a^c;
printf("%d %d %d",a,b,c);
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
解题思路:
- 方法1: step1:定义一个中间变量 step2:将第一个值赋给中间变量 step2:将第二个值赋给第一个值 step2:将第三个值赋给第二个值 step2:最后将中间变量值赋给第三个值
归属知识点: 引入中间变量